home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / edit / tde40.zip / tdestr.h < prev    next >
C/C++ Source or Header  |  1994-06-05  |  31KB  |  912 lines

  1. /*
  2.  * New editor name:  tde, the Thomson-Davis Editor.
  3.  * Author:           Frank Davis
  4.  * Date:             June 5, 1991
  5.  *
  6.  * This modification of Douglas Thomson's code is released into the
  7.  * public domain, Frank Davis.  You may distribute it freely.
  8.  *
  9.  * This file contains define's and structure declarations common to all
  10.  * editor modules.  It should be included in every source code module.
  11.  *
  12.  * I'm so stupid, I can't keep up with which declarations are in which
  13.  * file.  I decided to put all typedefs, structs, and defines in one file.
  14.  * If I don't, I end up defining a typedef one way in one file and a
  15.  * completely different way in another file.
  16.  */
  17.  
  18.  
  19. #include <stdio.h>
  20. #include <string.h>
  21. #include <stdlib.h>
  22. #include <ctype.h>
  23.  
  24. #include <assert.h>
  25. #if !defined( __UNIX__ )
  26.  #if defined( __MSC__ )
  27.   #include <malloc.h>          /* for memory allocation */
  28.   #if defined( toupper )
  29.     #undef toupper
  30.   #endif
  31.  #else
  32.   #include <alloc.h>           /* for memory allocation */
  33.  #endif
  34. #endif
  35.  
  36. /*
  37.  * in unix (POSIX?), getch( ) is in the curses package.  in Linux, ncurses
  38.  *  seems to be the best of the worst curses.
  39.  */
  40. #if defined(__UNIX__)
  41.    #include <dirent.h>          /* walking down directories */
  42.    #include <limits.h>          /* NAME_MAX and PATH_MAX, POSIX stuff */
  43.    #include <malloc.h>           /* for memory allocation */
  44.    #include <ncurses.h>
  45.    #include <unistd.h>          /* chdir, getcwd, etc... */
  46.    #include <sys/types.h>
  47.    #include <sys/stat.h>
  48. #else
  49.    #include <conio.h>
  50. #endif
  51.  
  52. #include "bj_ctype.h"
  53. #include "letters.h"
  54.  
  55. /*
  56.  * defines for the inline assembler.
  57.  */
  58. #if defined( __MSC__ )
  59.    #define  ASSEMBLE   _asm
  60. #else
  61.    #define  ASSEMBLE   asm
  62. #endif
  63.  
  64.  
  65. #if defined( __UNIX__ )
  66.    #define FAR
  67.    #define my_stdprn stderr
  68. #else
  69.    #define FAR far
  70.    #define my_stdprn stdprn
  71. #endif
  72.  
  73. /*
  74.  * based on code contributed by "The Big Boss" <intruder@link.hacktic.nl>
  75.  *  let's look for a config file in the current directory or in the user's
  76.  *  home directory.
  77.  */
  78. #if defined( __UNIX__ )
  79. # define CONFIGFILE      ".tdecfg"
  80. #endif
  81.  
  82.  
  83. /*
  84.  * based on code by chen.
  85.  *  in both DOS and UNIX, let's assume the biggest screen is 132x60.
  86.  */
  87. #define MAX_COLS           132  /* screen can be 132 columns in UNIX */
  88. #define MAX_LINES           60  /* highest screen ever used */
  89.  
  90. #define BUFF_SIZE         1042  /* buffer size for lines */
  91. #define MAX_LINE_LENGTH   1040  /* longest line allowed in file */
  92. #define FNAME_LENGTH        45  /* maximum file name length in lite bar */
  93. #define NO_MARKERS           3  /* maximum no. of markers */
  94. #define UNDO_STACK_LEN     200  /* number of lines in undo stack */
  95.  
  96. /*
  97.  * when we read in a file, lets try to match the size of the read buffer
  98.  *   with some multiple of a hardware or software cache that may be present.
  99.  */
  100. #define READ_LENGTH             1024
  101. #define DEFAULT_BIN_LENGTH      64
  102.  
  103.  
  104. #define REGX_SIZE               200     /* maximum number of nodes in nfa */
  105.  
  106.  
  107. /*
  108.  * general defines.
  109.  */
  110. #ifndef ERROR
  111. # define ERROR            (-1)  /* abnormal termination */
  112. #endif
  113. #ifndef OK
  114. # define OK                  0  /* normal termination */
  115. #endif
  116. #ifndef TRUE
  117. # define TRUE                1  /* logical true */
  118. #endif
  119. #ifndef FALSE
  120. # define FALSE               0  /* logical false */
  121. #endif
  122.  
  123. #define MAX_KEYS           256  /* number of special keys recognized by TDE */
  124. #define AVAIL_KEYS         233  /* number of special keys recognized by TDE */
  125. #define MAX_TWO_KEYS       128  /* number of two key-combos allowed by TDE  */
  126. #define STROKE_LIMIT      1024  /* number of key strokes in playback buffer */
  127. #if defined( __UNIX__ )
  128.  #define MAX_CURSES_KEYS   153  /* number of keys in ncurses  */
  129. #endif
  130.  
  131.  
  132. #define STACK_UNDERFLOW      1  /* code for underflowing macro stack */
  133. #define STACK_OVERFLOW       2  /* code for overflowing macro stack */
  134. #define SAS_P               20  /* number of sas pointers to tokens */
  135. #define NUM_FUNCS          143
  136.  
  137. #define NUM_COLORS          14  /* number of color fields in TDE */
  138.  
  139. /*
  140.  * special cases for keyboard mapping -  see bottom of main.c
  141.  */
  142. #define RTURN           262           /* Return key = 262 */
  143. #define ESC             258           /* Escape key = 258 */
  144. #define CONTROL_BREAK   269           /* Control-Break = 269 */
  145.  
  146.  
  147. /*
  148.  * The following defines are used by the "error" function to indicate
  149.  *  how serious the error is.
  150.  */
  151. #define WARNING         1    /* user must acknowledge, editor continues */
  152. #define FATAL           2    /* editor aborts - very rare! */
  153. #define INFO            3    /* display message, acknowledge, continue */
  154.  
  155.  
  156. /*
  157.  * define the type of block marked by user and block actions
  158.  */
  159. #define NOTMARKED       0    /* block type undefined */
  160. #define BOX             1    /* block marked by row and column */
  161. #define LINE            2    /* block marked by begin and end lines */
  162. #define STREAM          3    /* block marked by begin and end characters */
  163.  
  164. #define MOVE            1
  165. #define DELETE          2
  166. #define COPY            3
  167. #define KOPY            4
  168. #define FILL            5
  169. #define OVERLAY         6
  170. #define NUMBER          7
  171. #define SWAP            8
  172.  
  173. #define LEFT            1
  174. #define RIGHT           2
  175.  
  176. #define ASCENDING       1
  177. #define DESCENDING      2
  178.  
  179.  
  180. /*
  181.  * three types of ways to update windows
  182.  */
  183. #define LOCAL           1
  184. #define NOT_LOCAL       2
  185. #define GLOBAL          3
  186.  
  187. #define CURLINE         1
  188. #define NOTCURLINE      2
  189.  
  190.  
  191. /*
  192.  * search/replace flags.
  193.  */
  194. #define BOYER_MOORE     0
  195. #define REG_EXPRESSION  1
  196.  
  197. #define CLR_SEARCH      0
  198. #define WRAPPED         1
  199. #define SEARCHING       2
  200. #define REPLACING       3
  201. #define NFA_GAVE_UP     4
  202.  
  203. #define IGNORE          1
  204. #define MATCH           2
  205.  
  206. #define PROMPT          1
  207. #define NOPROMPT        2
  208.  
  209. #define FORWARD         1
  210. #define BACKWARD        2
  211.  
  212. #define BEGIN           1
  213. #define END             2
  214.  
  215.  
  216. #define BEGINNING       1
  217. #define CURRENT         2
  218.  
  219. /*
  220.  * word wrap flag.
  221.  */
  222. #define NO_WRAP         0
  223. #define FIXED_WRAP      1
  224. #define DYNAMIC_WRAP    2
  225.  
  226. /*
  227.  * date and time formats
  228.  */
  229. #define MM_DD_YY        0
  230. #define DD_MM_YY        1
  231. #define YY_MM_DD        2
  232. #define MM_DD_YYYY      3
  233. #define DD_MM_YYYY      4
  234. #define YYYY_MM_DD      5
  235.  
  236. #define _12_HOUR        0
  237. #define _24_HOUR        1
  238.  
  239.  
  240. /*
  241.  * used in interrupt 0x21 function xx for checking file status
  242.  */
  243. #define EXIST           0
  244. #define WRITE           2
  245. #define READ            4
  246. #define READ_WRITE      6
  247.  
  248. #define NORMAL          0x00
  249. #define READ_ONLY       0x01
  250. #define HIDDEN          0x02
  251. #define SYSTEM          0x04
  252. #define VOLUME_LABEL    0x08
  253. #define SUBDIRECTORY    0x10
  254. #define ARCHIVE         0x20
  255.  
  256. /*
  257.  * critical error def's
  258.  */
  259. #define RETRY           1
  260. #define ABORT           2
  261. #define FAIL            3
  262.  
  263.  
  264. /*
  265.  * flags used for opening files to write either in binary or text mode.
  266.  * crlf is for writing files in text mode - Operating System converts
  267.  * lf to crlf automatically on output.  in binary mode, lf is not translated.
  268.  */
  269. #define NATIVE          1
  270. #define CRLF            2
  271. #define LF              3
  272. #define BINARY          4
  273. #define TEXT            5
  274.  
  275. #define OVERWRITE       1
  276. #define APPEND          2
  277.  
  278. /*
  279.  * characters used in tdeasm.c to display eol and column pointer in ruler
  280.  */
  281. /*
  282. #if defined( __UNIX__ )
  283.  #define EOL_CHAR        0x1c
  284.  #define RULER_PTR       0x21
  285.  #define RULER_FILL      0x2e
  286.  #define RULER_TICK      0x2b
  287.  #define LM_CHAR         0x6c
  288.  #define RM_CHAR_RAG     0x3c
  289.  #define RM_CHAR_JUS     0x7c
  290.  #define PGR_CHAR        0x70
  291.  #define VERTICAL_CHAR   0x7c
  292. #else
  293.  #define EOL_CHAR        0x11
  294.  #define RULER_PTR       0x19
  295.  #define RULER_FILL      0x2e
  296.  #define RULER_TICK      0x04
  297.  #define LM_CHAR         0xb4
  298.  #define RM_CHAR_RAG     0x3c
  299.  #define RM_CHAR_JUS     0xc3
  300.  #define PGR_CHAR        0x14
  301.  #define VERTICAL_CHAR   0xba
  302. #endif
  303. */
  304.  
  305.  
  306.  
  307.  
  308. /*
  309.  * cursor size
  310.  */
  311. #define SMALL_INS       0
  312. #define BIG_INS         1
  313.  
  314. #define CURSES_INVISBL  0
  315. #define CURSES_SMALL    1
  316. #define CURSES_LARGE    2
  317.  
  318.  
  319. /*
  320.  * possible answers to various questions - see get_yn, get_ynaq and get_oa
  321.  */
  322. #define A_YES           1
  323. #define A_NO            2
  324. #define A_ALWAYS        3
  325. #define A_QUIT          4
  326. #define A_ABORT